-
RTOS(←Real Time Operating System)
- 군사 제품 미사일, 전투기, 전차 등에 사용
- 실시간성 : 빠르게 실행되는 것이 아닌 정해진 시간(데드라인) 안에 수행되서 완료되어야 한다.
- Reliablity가 요구되어 동적 할당 사용을 지양하고 항상 같은 결과가 나올 수 있도록 함
- OS단에서 32비트를 64비트 시스템으로 포팅하는 것은 프로그램 단이랑 차원이 다르다.
-
하드웨어 해킹이란
- 주변의 흔한 제품 해킹
-
흔하지 않은 제품
-
CCTV, 자동차, 드론, 비행기 등
-
항공기 SW는 매우 엄격한 인증을 받아야 함
- 설계부터 테스트까지 과정 추적
- 모든 코드 테스트
- 과정 추적에서 문제가 없다고 버그가 없다고 단정할 수 없음
- 비행기 관련 소스는 오픈되있지 않고, 외부와 연결되있지 않아 안전한 편이지만 앞으로 AI나 Connectivity가 강화되면 외부와 연결될 가능성있다.
-
-
의료기기, 스마트팜, 산업용 제품 등
-
산업용 제품은 구매 이후 오래되어 취약해질 수 있다.
- 복합기의 경우 중요 문서 유출될 수 있다.
-
- multilevel feedback queue(다단계 피드백 큐) MLFQ : 스케줄링 방식
-
임베디드 개발
-
임베디드 SW는 일반 SW보다 작거나 같은 크기
- 펌웨어, RTOS 레벨이 아니면 둘은 비슷하다.
- 기능이 매우 간단
- 저성능 → 요구 전력이 낮음
-
펌웨어 기능에 스케줄러가 필요하면 RTOS가 필요해진다.
-
펌웨어는 기능을 루프하도록 되어있다.
- 과거에는 OS가 올라간 펌웨어가 없었기 때문에 OS와 분리된 개념으로 보고 엄밀히 보면 OS없는 것을 펌웨어라고 한다.
- 최근에는 펌웨어에 OS가 올라간 형태를 펌웨어라고 통칭하기도 함
- 인터럽트 핀 방식으로 외부 입력 비동기적으로 처리할 수 있음
-
펌웨어 크기는 최소 수백메가에서 수백기가까지 다르다.
- 몇메가 수준도 가능하다.
-
- 부트로더 : 부팅 과정에서 다음에 실행될 프로그램 로딩
-
-
- Microprocessor Unit, MCU
-
과거 임베디드 제품 특징
-
구조가 단순하여 공격 벡터가 많지 않음
- → 간단한 보완 해결 가능
- HW에 대한 정보가 잘 공유되지 않아 해커의 정보 수집 어려움
-
사용할 수 있는 해킹 도구가 흔하지 않았음
- HW 디버깅 도구나 기술이 적었음
- 개발 도구가 굉장히 비싼 편
-
-
현대의 임베디드/IoT 제품 특징
- 연결성 : 쉽게 접근 가능
- 휴대성 : 위치 정보 등 사생활 침해 가능
- 위험성 : 오작동 시 치명적 피해 발생 가능
- 레거시 코드 : 산업 장비(비용 때문에 교체를 꺼림) 등 펌웨어 업데이트, 관리가 거의 안 되는 제품 많음 → 취약성 높음
- 리버싱 난이도 하향 : HW, CPU 아키텍처 정보 공유됨, HW/SW 디버깅 기술이 진보했고 편리해짐
-
임베디드 제품 구성
-
SoC(System on Chip), MCU
-
MCU는 코어 외에 주변장치(각종 컨트롤러)들 포함
- MCU는 RTOS 수준, 메모리도 포함되 있음
-
SoC는 MCU에 고성능 컨트롤러가 추가됨, 여러가지 기능들
- GPU, 인코더 등 (컨트롤러, 칩들이 다른 전원 사용)
- 범용 OS가 올라갈 수 있고, 메모리는 빠짐
- DRAM, 저장장치, 부팅장치(SD카드, 낸드플래시) 등을 따로 붙여줘야 함
-
- DRAm, Flash 메모리
-
통신 인터페이스(UART, I2C, SPI)
- Universal Asynchronous Receiver/Transmitter : 비동기 통신 전용 HW, 없으면 비동기 통신 프로토콜 직접 구현해야 함
- Inter-Integrated Circuit : MCU와 주변장치의 통신을 하는 Two Wire Interface
- Serial Peripheral Interconnect : 모토로라 개발 전이중통신 동기식 통신 규격
- 외부 통신 모듈
- 디스플레이 장치
-
전원부
- PMIC : 칩 별로 필요 전원이 다르기 때문에 맞춰서 전원 공급해줌
-
-
Flash
- NAND Flash : 배드가 많이 나도 사용 가능
- NOR Flash
- SPI Flash
- EEPROM
- SIP, System in Package
-
외부 통신 모듈
- Wi-Fi module
- Bluetooth module
- Wi-Fi/BT module
- DMB
-
일반적 HW 해킹
-
펌웨어 추출 → 획득
- 제품 Support site
-
제품 펌웨어 업데이트 시 패킷 캡쳐
- 펌웨어와 펌웨어 url주소 획득 후 업데이트 인증 방식을 알아내서 업데이트 패킷을 캡쳐한다, → 업데이트 과정 중 버그를 찾아냄
-
부트로더 기능 이용 펌웨어 dump
- Serial Port → 부트로더 쉘 → 부트로더 내장 기능 → 커널 인자 활용해 펌웨어 획득
-
OS 기능 이용 펌웨어 dump
-
Linux 계열, POSIX 지원 OS, RTOS
- 플래시 FS와 Partitioning 지원
- /dev/mtdblock0 등 dev 파일 접근하여 쉽게 저장장치 접근 가능
-
mtd tool 사용하여 펌웨어 dump
- MTD(Memory Technology Device) : 플래시 메모리를와 상위 application 계층를 연결 통신하기 위한 별도 계층의 디바이스 파일
-
-
JTAG 디버거 연결해서 펌웨어 dump
-
JTAG 디버거를 통해 펌웨어 획득
-
SoC 코어 및 주변 입출력 버스에 접근 가능
- Core Register, Memory, 각종 controller, 주변 장치 등
- JTAG을 뚫으면 모두 침투 당하는 것과 마찬가지
-
-
-
Chip Off
-
플래시 칩 떼어내기
-
매우 어렵다
- 디솔더링, 리볼링
- 고가의 데이터를 읽어내는 툴 사용
-
-
- 펌웨어 리버싱 → 취약점 분석
- 외부 통신 인터페이스로 퍼징
- 취약점 공격 코드
-
- Decapping : the process of removing the protective cover of a microchip so that the contained die is revealed for visual inspection of the micro circuitry imprinted on the die.
-
SEM(Scanning Electron Microscope)(주사전자현미경) Imaging
- 디캐핑 후 이미징함
- 전자를 쏘아 튕겨져 나오는 전자로 이미지화함
하드웨어 해킹 기초
2020-07-07